package produkt;

import interfejsy.ConnectPRO;


import java.awt.*; 
import java.awt.event.*; 
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class produkt extends JPanel {
      
        private Statement state = null;
        private Statement state1 = null;
        private Statement state2 = null;
        private Statement state3 = null;
        
        private PreparedStatement prepar;
        private PreparedStatement prepar1;
        private PreparedStatement prepar2;
        
        private ResultSet result = null;
        private ResultSet result1 = null;
        private ResultSet result2 = null;
        private ResultSet result3 = null;
        
     
    
        private Choice kategoria = new Choice();
        private Choice produkty = new Choice();
        private int tmp;
        private JLabel info = new JLabel("",JLabel.CENTER);
        private String produkty1, stara_nazwa, stara_nazwa1;
        JPanel dol_1 = new JPanel();
        JPanel dol = new JPanel();
        
         JTextField JTFnazwaProduktu;
         JTextField JTFcenaHurtowa;
         JTextField JTFcenaSprzedazy;
         
         JTextField JTFedytuj_nazwe;
         JTextField JTFedytuj_ceneSprz;
         JTextField JTFedytuj_ceneHurt;
        
        

        public produkt() throws Exception{
                
                ConnectPRO.connectpro();
                dodajProdukt();
                
        }



        
        public void dodajProdukt(){
                
                //setOpaque(false); 
                setLayout(new GridLayout(3, 1)); //Ustawienie typu rozmieszczenia elementow 
                
                
                JTFnazwaProduktu        = new JTextField(20);
                JTFcenaHurtowa          = new JTextField(20);
                JTFcenaSprzedazy        = new JTextField(20);
                
               
  // =======================================================================================                
              /*  result=pobierz_kategorie();
      
                try {
        			while(result.next()){
        				
        				
        				kategoria.add(result.getString("nazwa")); // przypisanie kolejnym atrybutom listy rozwijanej rekordow pobranych z BD

        			}
        		} catch (SQLException e) {
        			
        			e.printStackTrace();
        		}
				
 // =======================================================================================
                result1=pobierz_produkty();
                
                try {
        			while(result1.next()){
        				
        				
        				produkty.add(result1.getString("nazwa")); // przypisanie kolejnym atrybutom listy rozwijanej rekordow pobranych z BD

        			}
        		} catch (SQLException e) {
        			
        			e.printStackTrace();
        		}
        		*/
// =======================================================================================      
                pobierz_kategorie();
                pobierz_produkty();
 
                JButton ButtondodajProdukt = new JButton("Dodaj produkt");
                                        
                ButtondodajProdukt.addActionListener(new ActionListener(){ //akcja przycisku ButtondodajProdukt
                        
                        
                        String nazwaProduktu1;
                        String cenaHurtowa1;
                        String cenaSprzedazy1;                    
                        String kategoria1;

          public void actionPerformed(ActionEvent e){
                        nazwaProduktu1  =       JTFnazwaProduktu.getText();
                        cenaHurtowa1    =       JTFcenaHurtowa.getText();
                        cenaSprzedazy1  =       JTFcenaSprzedazy.getText();
                       
                        kategoria1 = kategoria.getSelectedItem();  // przypisanie zmiennej wartosci, ktora wybrano na liscie rozwijanej
                        
                        int cenaHurt = Integer.parseInt(cenaHurtowa1);
        				int cenaSprzed = Integer.parseInt(cenaSprzedazy1);
                        
                        if(nazwaProduktu1.length()!=0 && cenaHurtowa1.length()!=0 && cenaSprzedazy1.length()!=0){ 
                                                                                                  //tu pasowaolby jeszcze jakas walidacje       
                                        dodajProd(nazwaProduktu1, cenaHurt, cenaSprzed, kategoria1);
                                        
                                        //removeAll();
                                        
                                       // add(new JLabel("Produkt zostal dodany do bazy."));
                                        
                                        validate();
                                        repaint();
                                        clear();
                                        //pane.repaint();
                                        //pane.validate();
                        }
                        else clear();
                        }});
                
                
    // ========= obsluga przycisku wyczysc =======================================
                
                JButton clr = new JButton("Wyczysc pola");
        		clr.addActionListener(new ActionListener(){
        			public void actionPerformed(ActionEvent e){
        				clear();
        			}
        		});
        		
        		
  // ========= obsluga przycisku usun =======================================
                
                JButton usun = new JButton("Usun");
        		usun.addActionListener(new ActionListener(){
        			
        			
               			
        			public void actionPerformed(ActionEvent e){
        				produkty1 = produkty.getSelectedItem(); 
        				usun(produkty1);
        				
                        validate();
                        repaint();
        			}
        		});
        		
        		
// ========= obsluga przycisku zapisz =======================================
                
                JButton zapisz = new JButton("Zapisz");
                
               
                zapisz.addActionListener(new ActionListener(){ //akcja przycisku ButtondodajProdukt
                    
                    
                    String edytuj_nazwe;
                    String edytuj_ceneSprz;
                    String edytuj_ceneHurt;                    
                    
                    
                  
                    
      public void actionPerformed(ActionEvent e){
    	  			edytuj_nazwe     =  JTFedytuj_nazwe.getText();
    	  			edytuj_ceneSprz  =  JTFedytuj_ceneSprz.getText();
    	  			edytuj_ceneHurt  =  JTFedytuj_ceneHurt.getText();
                   
    	  			stara_nazwa = produkty.getSelectedItem();
                    
                    int edytuj_ceneSprz_int = Integer.parseInt(edytuj_ceneSprz);
    				int edytuj_ceneHurt_int = Integer.parseInt(edytuj_ceneHurt);
                    
                    if(edytuj_nazwe.length()!=0 && edytuj_ceneSprz.length()!=0 && edytuj_ceneHurt.length()!=0){ 
                                                                                              
                                    edytuj(stara_nazwa, edytuj_nazwe, edytuj_ceneSprz_int, edytuj_ceneHurt_int);
                                                                                                        
                                    validate();
                                    repaint();
                                    clear1();
                    }
                    else clear();
                    }});
        		
// ========= obsluga przycisku edytuj =======================================
                
                JButton edytuj = new JButton("Edytuj");
                
                JTFedytuj_nazwe     = new JTextField();
                JTFedytuj_ceneSprz  = new JTextField();
                JTFedytuj_ceneHurt  = new JTextField();
                
        		edytuj.addActionListener(new ActionListener(){
        			
        			

        			public void actionPerformed(ActionEvent e){
        				
        				stara_nazwa1 = produkty.getSelectedItem();
        				
        				
        				try{
        					
                        	state3 = ConnectPRO.connect.createStatement();	
                			result3 = state3.executeQuery("select cena_sprzedazy,cena_hurtowa from produkty where nazwa like '" + stara_nazwa1 + "'");
                     		while (result3.next()) {          		 
                			 int cenaS= result3.getInt("cena_sprzedazy");	
                			 int cenaH= result3.getInt("cena_hurtowa");
                			
                			 JTFedytuj_nazwe.setText(stara_nazwa1);	
                			 String s = Integer.toString(cenaS);
                			 JTFedytuj_ceneSprz.setText(s);
                			 String s1 = Integer.toString(cenaH);
                			 JTFedytuj_ceneHurt.setText(s1);
                			 
                     		}
        				}catch(SQLException ee){
                        	info.setForeground(Color.red);
                        	info.setText("Nie udalo sie edytowac");
                             
                        }
        				
        				
        				dol.add(dol_1);
                        validate();
                        repaint();
        			}
        		});
// ============= umieszcenie obiektow w panelu ======================
        		
        		
        		
        		
        		 JPanel gora = new JPanel();
        		 gora.setLayout(new GridLayout(4, 3));
        		 
        		 gora.add(new JLabel("nazwa produktu: "));
        		 gora.add(new JLabel(""));
        		 gora.add(JTFnazwaProduktu);
                 
        		 gora.add(new JLabel("cena hurtowa: "));
        		 gora.add(new JLabel(""));
        		 gora.add(JTFcenaHurtowa);
                 
        		 gora.add(new JLabel("cena sprzedazy: "));
        		 gora.add(new JLabel(""));
        		 gora.add(JTFcenaSprzedazy);
                 
        		 gora.add(new JLabel("Wybierz objetosc: "));
        		 gora.add(new JLabel(""));
        		 gora.add(kategoria);
        		 
        		 
        		 JPanel srodek = new JPanel();
        		 srodek .setLayout(new GridLayout(4, 3));
        		 
         		 srodek.add(new JLabel(""));
         		 srodek.add(clr);	 
	         	 srodek.add(ButtondodajProdukt);
	         	 
	         	 srodek.add(new JLabel(""));
         		 srodek.add(new JLabel(""));
         		 srodek.add(new JLabel(""));
         		 
         		 srodek.add(new JLabel("Edycja | Usuwanie"));
         		 srodek.add(new JLabel(""));
         		 srodek.add(new JLabel(""));
         		
         		 srodek.add(new JLabel("Wybierz produkt:"));
         		 srodek.add(produkty);
         		 JPanel usun_edytuj = new JPanel();
         		 usun_edytuj.setLayout(new GridLayout(1, 2));
         		 usun_edytuj.add(usun);
         		 usun_edytuj.add(edytuj);
         		 srodek.add(usun_edytuj);
         		 
         		 
         		 
         		
       		    dol.setLayout(new GridLayout(2, 1));
       		    
       		   
       		   
       		    info.setFont(new Font("Verdana", Font.BOLD, 19));
       		    
       		    
       		    
       		   
       		    dol_1.setLayout(new GridLayout(2, 4));
       		    dol_1.add(JTFedytuj_nazwe);
       		    dol_1.add(JTFedytuj_ceneSprz);
       		    dol_1.add(JTFedytuj_ceneHurt);
       		    dol_1.add(zapisz);
       		    
       		    dol_1.add(new JLabel("nazwa",JLabel.CENTER));
        		dol_1.add(new JLabel("cena sprzed",JLabel.CENTER));
        		dol_1.add(new JLabel("cena hurt",JLabel.CENTER));
       		    
        		
        		//dol.add(dol_1);
       		    dol.add(info);
       		    
       		    
         		 
         		 add(gora);
         		 add(srodek);
         		 add(dol);
         	 	
                
        }

///////////////////////////////////////////////////////////////////////
        
        private void dodajProd(String nazwaProduktu, int cenaSprzedazy, int cenaHurtowa, String kategoria){ //przeciazona metoda czy tam przeladowana
                try{
                	
                	state2 = ConnectPRO.connect.createStatement();	
        			result2 = state2.executeQuery("select id_kategorii from kategoria where nazwa like '" + kategoria + "'");
             		while (result2.next()) {
        			 tmp = result2.getInt("id_kategorii");
        			
             		}
                        
                    prepar = ConnectPRO.connect.prepareStatement("insert into produkty (nazwa, cena_sprzedazy, id_kategori, cena_hurtowa) values(?, ?, ? ,?)");
        			prepar.setString(1, nazwaProduktu);
        			prepar.setInt(2, cenaSprzedazy);	
        			prepar.setInt(3, tmp);
        			prepar.setInt(4, cenaHurtowa);
        			prepar.execute();  
        	    info.setForeground(Color.blue);    // kolor czcionki informacji zwrotnej	
        		info.setText("Produkt zostal dodany do bazy");
        		produkty.removeAll();
        		pobierz_produkty();
        		
                        
                       // clear();
                        
                }catch(SQLException e){
                	info.setForeground(Color.red);
                	info.setText("Nie udalo sie dodac produktu");
                      
                }
        }
        
        ///////////////////////////////////////////////////////////////////////
        private void usun(String nazwa){
        	try{
        	prepar1 = ConnectPRO.connect.prepareStatement("DELETE FROM produkty WHERE nazwa like '" + nazwa + "'");
        	prepar1.execute(); 
        	info.setForeground(Color.blue);    // kolor czcionki informacji zwrotnej
        	info.setText("    Produkt został usunięty");
        	produkty.removeAll();
    		pobierz_produkty();
        		
        			
        	}catch(SQLException e){
        		info.setForeground(Color.red);
        		info.setText("Nie mozna usunac produktu");
               
        	}

        	}
   
///////////////////////////////////////////////////////////////////////
        
private void edytuj(String stara_nazwa, String nowa_nazwa, int cenaSprzedazy, int cenaHurtowa){ //przeciazona metoda czy tam przeladowana
try{

prepar2 = ConnectPRO.connect.prepareStatement("update produkty set nazwa = ?, cena_sprzedazy = ?, cena_hurtowa = ? where nazwa like '" + stara_nazwa + "'");
prepar2.setString(1, nowa_nazwa);
prepar2.setInt(2, cenaSprzedazy);	
prepar2.setInt(3, cenaHurtowa);
prepar2.execute();  


info.setForeground(Color.blue);    // kolor czcionki informacji zwrotnej	
info.setText("Aktualizacja zakończona pomyślnie.");
produkty.removeAll();
pobierz_produkty();


// clear();

}catch(SQLException e){
info.setForeground(Color.red);
info.setText("Nie udalo sie dodac produktu");

}
}

        
///////////////////////////////////////////////////////////////////////
        
        private void clear(){
                JTFnazwaProduktu.setText("");
                JTFcenaHurtowa.setText("");
                JTFcenaSprzedazy.setText("");
                
        }
        
        
///////////////////////////////////////////////////////////////////////
        
private void clear1(){
	JTFedytuj_nazwe.setText("");
	JTFedytuj_ceneSprz.setText("");
	JTFedytuj_ceneHurt.setText("");

}

        ///////////////////////////////////////////////////////////
        
     // === funkcja pobiera z bazy danych kategorie (rozmiary) ktore potem umieszczane sa
    	// === w liscie rozwijanej===================================== ====================
    	
    	
    	public void pobierz_kategorie(){
    		try{
    			
    			state = ConnectPRO.connect.createStatement();
    			result = state.executeQuery("select nazwa from kategoria");
    			
    		}catch(SQLException e){
    			System.out.println("nie mozna uzupelnic listy!");
    		}
    		
    		
    		 try {
     			while(result.next()){
     				
     				
     				kategoria.add(result.getString("nazwa")); // przypisanie kolejnym atrybutom listy rozwijanej rekordow pobranych z BD

     			}
     		} catch (SQLException e) {
     			
     			e.printStackTrace();
     		}
    		
    	
    	}
    	
    	 // === funkcja pobiera z bazy danych nazwy produktow ktore potem umieszczane sa
    	// === w liscie rozwijanej===================================== ====================
    		
    	public void pobierz_produkty(){
    		try{
    			
    			state1 = ConnectPRO.connect.createStatement();
    			result1 = state1.executeQuery("select nazwa from produkty");
    			
    			}catch(SQLException e)
    			{  System.out.println("nie mozna uzupelnic listy!");  }
    		
    		
    		 try {
     			while(result1.next()){
   
     				produkty.add(result1.getString("nazwa")); // przypisanie kolejnym atrybutom listy rozwijanej rekordow pobranych z BD

     			}
     		} catch (SQLException e) {
     			
     			e.printStackTrace();
     		}
    		
    		
    	}

}
